#ifndef DUCKDBSQLDRIVERTEST_H
#define DUCKDBSQLDRIVERTEST_H

#include <QtTest>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
#include <QSqlRecord>
#include <QSqlDriver>
#include <QSqlIndex>
#include <QDir>
#include <QFileInfo>
#include <QDateTime>
#include <QStringList>
#include <QFile>

class DuckdbSqlDriverTest : public QObject
{
    Q_OBJECT

private:
    QString m_dbPath;
    QSqlDatabase m_db;

private slots:
    // 初始化和清理
    void initTestCase();
    void cleanupTestCase();
    
    // 2.1 基础功能验证
    void testDriverAvailability();     // 2.1.1 驱动加载检测
    void testDatabaseConnection();     // 2.1.2 数据库连接
    void testTableCreateAndDrop();     // 2.1.3 表创建与删除
    void testDataCRUD();               // 2.1.4 数据CRUD
    void testResultSetHandling();      // 2.1.5 结果集处理
    
    // 2.2 SQL语法与数据类型兼容性
    void testCommonSQLSyntax();        // 2.2.1 常用SQL语法测试
    void testDataTypes();              // 2.2.2 数据类型覆盖
    
    // 2.3 事务与并发控制
    void testTransactionCommit();      // 2.3.1 事务提交
    void testTransactionRollback();    // 2.3.2 事务回滚
    void testNestedTransactions();     // 2.3.3 事务嵌套
    void testConcurrentConnections();  // 2.3.4 多连接并发写
    
    // 2.4 异常场景容错性
    void testConnectionErrors();       // 2.4.1 连接异常
    void testSQLSyntaxErrors();        // 2.4.2 SQL语法错误
    void testConstraintViolations();   // 2.4.3 约束冲突
    void testResourceLeaks();          // 2.4.4 资源泄漏检测
};

#endif // DUCKDBSQLDRIVERTEST_H